home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / dev / gui / BGUI11c.lha / bgui.doc < prev    next >
Text File  |  1995-05-07  |  49KB  |  1,165 lines

  1.  
  2.  
  3. `BGUI' release 1.1c
  4. *******************
  5.  
  6. Preface
  7. *******
  8.  
  9.                                 `BGUI' release 1.1c
  10.                     (C) Copyright 1993-1994  Jaba Development
  11.                     (C) Copyright 1993-1994 Jan van den Baard
  12.                           Written using  DICE v3.0 by
  13.      
  14.                         SNail: Jan van den Baard
  15.                                Bakkerstraat  176
  16.                                3082 HE Rotterdam
  17.                                     Holland
  18.      
  19.                      Fido: 2:286/407.53  (Jan van.den.Baard)
  20.                            EMail: jaba@grafix.wlink.nl
  21.      
  22.                               EMail is preferred.
  23.                If you must use snail mail then please make it clear
  24.                when you absolutely need an anwser and (don't forget
  25.                       this) include enough return postage.
  26.      
  27.                                   User Manual
  28.                      (C)Copyright 1993-1994 Jaba Development
  29.                                          __  __
  30.                                         / / /  \
  31.                                  __    / / / /\ \
  32.                             _____\ \__/ /_/ /_/ /_____
  33.                            (__________________________)
  34.  
  35.    `BGUI',  (C) Copyright 1993-1994 Jaba Development. All rights reserved. This
  36. program is GiftWare. This means that if you want to use the programs you are
  37. morally obligated to reward the author with a gift that, you think, matches
  38. his efforts. If you cannot think of a gift (come on! be creative ;), a small
  39. financial donation will always be gladly accepted.
  40.  
  41.    I have thought about how to release this package for quite some time. My
  42. initial thought went out to shareware but I soon forgot about this. Since most
  43. of the libraries of this kind seem to be shareware I do not think that many
  44. people like this simply because it's anoying to have to pay for a library if
  45. you had to pay for the application as wel.
  46.  
  47.    To avoid these problems I have decided to release this package as giftware
  48. for people writing freely distributable software. With "freely distributable
  49. software" I mean non-crippeled, free of charge software. Authors who wish to
  50. use `BGUI' in shareware and/or commercial programs must pay for the usage of
  51. `BGUI' before actually using it.
  52.  
  53.    ShareWare and/or commercial usage is `not' allowed without:
  54.  
  55.       1) Prior written permission from the author.
  56.       2) A small finacial donation of US$ 20,-, DM 30,- or HFL 30,-.
  57.       3) A free and registered copy of the product including free updates that
  58.          still make use of the library.
  59.  
  60.    The idea behind this distribution policy is simple. You make money with the
  61. aid of `BGUI'? I want to get my (very humble) share.
  62.  
  63.    This software is not crippeled so when you register it you will not recieve
  64. a key-file or an updated version. Registering simply buys you the right to use
  65. this software in shareware and/or commercial applications.
  66.  
  67.    Resonable, eh?
  68.  
  69. Introduction
  70. ************
  71.  
  72.    `BGUI' is a BOOPSI based shared library contaning a number of BOOPSI
  73. classes.  It allows for easy creation and managing of font sensitive and size
  74. adjustable GUI's on the Amiga. Hmm, where have I read something like this
  75. before..., I hear you say.
  76.  
  77.    YES! This is yet another GUI library. I know there has been a lot of
  78. discussions about the usabillity and neccesity of GUI libraries on the nets
  79. lately. Still, being the ignorant bugger that I am, at some point I felt it
  80. was necessary to write yet another one.
  81.  
  82.    Believe me when I say that `BGUI' was not intended to become a releasable
  83. project. I started coding `BGUI' simply because I was amazed what MUI did
  84. using BOOPSI. Therefore I started coding some BOOPSI classes as a learning
  85. experience.
  86.  
  87.    Hmmm... This is beginning to sound like an excuse... As if I did something
  88. terrible ;)
  89.  
  90.    The point is that, while working on BGUI, I saw many GUI libraries being
  91. released and not one of them really seemed to take off. This made me think
  92. that all this talk about "For every app I run I need to install a different
  93. GUI library" really is bull. Please correct me if I'm wrong but I have yet to
  94. see a program requiring a GUI library (with the exception of MUI ofcourse).
  95.  
  96.    Sure there are a lot available but MUI is the only one which actually seems
  97. to be used by the programmers.
  98.  
  99.    This is the reason for `BGUI'. I have tryed to create a library which does
  100. it's thing simular to MUI eliminating the biggest problems that programmers
  101. seem to have with MUI. Meaning no fancy
  102. background-pen-frame-text-image-whatever settings editor, not a zillion extra
  103. images, no external class libraries etc.
  104.  
  105.    `BGUI' is a single library which can be removed as easely as it can be
  106. installed. It provides an easy way to create and control GUI's without becoming
  107. excessive in what it does.
  108.  
  109.    I guess time will tell if `BGUI' is going to be accepted or not...
  110.  
  111. Features
  112. ********
  113.  
  114.    * Requires at least OS 2.04 (Yes, that is a feature :)
  115.  
  116.    * Extends on the existing system gadgetclass and rootclass.
  117.  
  118.    * Creates completely font sensitive GUI's.
  119.  
  120.    * Supports sizable windows.
  121.  
  122.    * AppWindow support.
  123.  
  124.    * Titled group-frames and seperators.
  125.  
  126.    * Supports OS 3.0 when available.
  127.  
  128.    * Style Guide compliant.
  129.  
  130.    * Keyboard control of most gadget classes.
  131.  
  132.    * Several types of notification to create "self driven" GUI's.
  133.  
  134.    * Easy intergration of third-party classes.
  135.  
  136.    * Easy to make your class work directly with BGUI.
  137.  
  138.    * Object oriented.
  139.  
  140.    * Resonable speed, even with a 68000 processor.
  141.  
  142.    * Relatively small library.
  143.  
  144.    * Classes for easy filerequester and commodity creation.
  145.  
  146.    * Seperate ARexx class including source code.
  147.  
  148. Requirements
  149. ************
  150.  
  151.    `BGUI' requires at least version 2.04 of the operating system. It does `not'
  152. run on 1.3 systems. Are there still people running 1.3?
  153.  
  154.    `BGUI' also requires the following disk-based libraries to operate:
  155.  
  156.    * gadtools.library          (V37)   (menus)
  157.  
  158.    * asl.library               (V37)   (filereq class)
  159.  
  160.    * commodities.library       (V37)   (commodities class)
  161.  
  162.    The following libraries are not required but they will impose on the
  163. functionality of the library when not available:
  164.  
  165.    * locale.library            (V38)   (localized library strings)
  166.  
  167.    * amigaguide.library        (V37)   (On-line help)
  168.  
  169.    * workbench.library         (V37)   (App-window support)
  170.  
  171.    It should not be a problem to use BGUI on a system with 512KByte but a
  172. minimum of 1 Megabyte is suggested as a minimum.
  173.  
  174. Installation
  175. ************
  176.  
  177.    The installation of BGUI is very simple. You can either use the Installer
  178. utility by C= which will install the library for you or you can copy the
  179. `bgui.library' to your LIBS: directory or into a directory you might have
  180. setup for non-system libraries.
  181.  
  182.    Where you put the headers/modules for the language you use is up to you.
  183. Since the different compilers and users use different directory structures I
  184. did not supply a script for you to install these. You'll have to do this by
  185. hand.
  186.  
  187. Read Me
  188. *******
  189.  
  190.    * The bgui.library is a special library in the sence that it is a single
  191.      task library.  This means that `every' task using the library must open
  192.      the library for itself.  The library base pointer may `not' be shared
  193.      between different tasks.
  194.  
  195.      The reason for this is that the library tracks information like window
  196.      bounds etc.  This tracking is done for each individual task.
  197.  
  198.      So if your code spawns a sub-task which needs the library, the sub-task
  199.      code must open the library for itself. It may not share it with the main
  200.      task.
  201.  
  202.    * The object ID's (gadgets and menus) are restricted to the range 1..65535.
  203.      ID's smaller or larger than this are not allowed. This should not be a
  204.      problem :)
  205.  
  206.    * When designing custom classes to work with BGUI please try to keep your
  207.      tag values and method ID's well out of the range of the BGUI tag values
  208.      and method ID's. Using values that conflict with the BGUI values may have
  209.      unexpected results.
  210.  
  211.    * Do not be alarmed when you notice disk-activity when a BGUI requester
  212.      pops up. This is due to the fact that the bgui.library catalog file is
  213.      re-loaded each time BGUI needs it. This makes sure that the language is
  214.      correct if it changed.
  215.  
  216.    * When scrolling a large listview the mouse pointer may move in steps
  217.      rather than smoothly. This is not abnormal behaviour with BOOPSI objects
  218.      because all rendering occures on the input device it's task. Just scroll
  219.      a MultiView window with the scroller and you'll see the same effect.
  220.  
  221. Keyboard & Mouse
  222. ****************
  223.  
  224.    Most of the BGUI gadget objects can be controlled by the keyboard. Usually
  225. the key that is used to control an object is shown by an underlined character
  226. in the object it's label. The objects can be controlled as follows:
  227.  
  228.    * `Button' - Pressing the key will make the object appear pressed. If you
  229.      release the key the object appears normal again and the application is
  230.      signalled that the object was selected. When you accidentally activated
  231.      the button you can press SHIFT or ESC before releasing the key to cancel
  232.      the selection.
  233.  
  234.    * `Toggle Button' - Pressing the key will toggle the selected state of the
  235.      toggle button.
  236.  
  237.    * `CheckBox' - Pressing the key will toggle the selected state of the
  238.      checkbox object.
  239.  
  240.    * `Prop (Scroller)' - Pressing the key will advance the knob position by
  241.      one page. When you press the key together with SHIFT the knob will backup
  242.      one page. You can reset the knob position when you are dragging the knob
  243.      with the mouse by clicking on the right mouse button.
  244.  
  245.    * `Listview' - Pressing the key will select the next entry in the list
  246.      scrolling the entries when necessary. Pressing the key together with
  247.      SHIFT will select the previous entry. Read only listview objects will
  248.      simply scroll the list forward and backward.
  249.  
  250.    * `Cycle' - Pressing the key will cycle one choise forward. Pressing the
  251.      key together with SHIFT will cycle one choise backward. Selecting the
  252.      gadget with the mouse while holding down the SHIFT key will also make the
  253.      gadget cycle backward. When the cycle gadget was setup to be a popup
  254.      gadget by the application programmer you can click inside the label area
  255.      to pop-up a menu from which you can select the desired item. You can
  256.      recognize a popup gadget by the imagery left of the label area. Normal
  257.      cycle gadgets have a circular arrow here and popup gadgets have a small
  258.      menu here.
  259.  
  260.    * `Slider' - Pressing the key will advance the knob position by one.
  261.      Pressing the key together with shift will decrease the knob position by
  262.      one. You can reset the knob position when you are dragging the knob with
  263.      the mouse by clicking to on the right mouse button.
  264.  
  265.    * `String,Integer' - Pressing the key will simply activate the gadget.
  266.  
  267.    * `Mx' - Pressing the key will select the next button skipping any disabled
  268.      buttons. Pressing the key together with shift will select the previous
  269.      button skipping any disabled buttons. If the Mx object is in tabs mode
  270.      the choises will not stop at the last or first selection but instead it
  271.      will cycle back to the start or the end.
  272.  
  273.    As you can see this behaviour is mostly style guide compliant with some
  274. additional possibilities.
  275.  
  276. Disclaimer
  277. **********
  278.  
  279.    THERE IS NO WARRANTY FOR THE PROGRAMS, TO THE EXTENT PERMITTED BY
  280. APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS
  281. AND/OR OTHER PARTIES PROVIDE THE PROGRAMS "AS IS" WITHOUT WARRANTY OF ANY
  282. KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  283. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE
  284. ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAMS IS WITH YOU.
  285. SHOULD THE PROGRAMS PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
  286. SERVICING, REPAIR OR CORRECTION.
  287.  
  288.    IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
  289. ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY REDISTRIBUTE THE PROGRAMS AS
  290. PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
  291. INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
  292. THE PROGRAMS (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
  293. INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
  294. PROGRAMS TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
  295. PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  296.  
  297. License
  298. *******
  299.  
  300.    This license applies to the product called `BGUI', a program for the Amiga
  301. computer, published by Jan van den Baard under the concepts of GiftWare, and
  302. the accompanying documentation, example files and anything else that comes
  303. with the original distribution. The term "Program" below, refer to this
  304. product. The term "Author" below, refers to "Jan van den Baard". The license
  305. is addresses as "you".
  306.  
  307.    * You may copy and distribute verbatim copies of the program's executable
  308.      code and documentation as you receive it, in any medium, provided that
  309.      you conspicuously and appropriately publish only the original, unmodified
  310.      program, with all copyright notices and disclaimers of warranty intact
  311.      and including all the accompanying documentation, example files and
  312.      anything else that came with the original.
  313.  
  314.    * You may not copy and/or distribute this program without the accompanying
  315.      documentation and other additional files that came with the original. You
  316.      may not copy and/or distribute modified versions of this program.
  317.  
  318.    * You may not copy, modify, sublicense, distribute or transfer the program
  319.      except as expressly provided under this license.  Any attempt otherwise
  320.      to copy, modify, sublicense, distribute or transfer the program is void,
  321.      and will automatically terminate your rights to use the program under
  322.      this license.  However, parties who have received copies, or rights to
  323.      use copies, from you under this license will not have their licenses
  324.      terminated so long as such parties remain in full compliance.
  325.  
  326.    * By copying, distributing and/or using the program you indicate your
  327.      acceptance of this license to do so, and all its terms and conditions.
  328.  
  329.    * Each time you redistribute the program, the recipient automatically
  330.      receives a license from the original licensor to copy, distribute and/or
  331.      use the program subject to these terms and conditions.  You may not
  332.      impose any further restrictions on the recipients' exercise of the rights
  333.      granted herein.
  334.  
  335.    * You may not disassemble, decompile, re-source or otherwise reverse
  336.      engineer the program.
  337.  
  338.    * You are free to use the programs. If, after an evaluation period of up to
  339.      30 days, you find the programs useful enough to continue using them you
  340.      are morally, not lawfully, obligated to send the author a gift that, you
  341.      think, matches his efforts. Shareware or commercial usage of the programs
  342.      require registering. Please refer to the *note Preface::.  section for
  343.      more information on registering.
  344.  
  345.    * If you wish to incorporate parts of the programs into other programs,
  346.      write to the author to ask for permission. If you want to release your
  347.      programs as being Public Domain, FreeWare or GiftWare you are allowed to
  348.      include a copy of the "bgui.library" without the accompaning
  349.      documentation and files. ShareWare and Commercial distribution of the
  350.      programs is not allowed without prior written permission. Please refer to
  351.      the *note Preface::. section for more information on registering.
  352.  
  353.    * You agree to cease distributing the program and data involved if
  354.      requested to do so by the author.
  355.  
  356.    * You may charge a fee to recover distribution costs. The fee for diskette
  357.      distribution may not be more than the cost to obtain a public domain
  358.      diskette from Fred Fish.
  359.  
  360. History
  361. *******
  362.  
  363. V37.11
  364. ======
  365.  
  366.    * Started written history...
  367.  
  368.    * Added the PROGRESS_Divisor tag for those extremely large values.
  369.  
  370.    * BUG FIX: The progress class object could fill the gauge 1 pixel to far in
  371.      some cases. Added some extra code to prevent this from happening.
  372.  
  373.    * Added the external class. This class makes it easy to include third party
  374.      classes like the colorwheel.gadget in a BGUI user interface. Still have
  375.      major problems handling notification though...
  376.  
  377.    * Added the WM_ADDUPDATE method to the window class. This method makes it
  378.      possible to connect an external class object to another object to perform
  379.      simple icclass style notification.
  380.  
  381. V37.12
  382. ======
  383.  
  384.    * BUG FIX:  The layout engine sometimes layouted an object one or two
  385.      pixels to small. Added some extra code to prevent this from happening.
  386.  
  387.    * Added the LGO_Align attribute to enhance the layout procedure.
  388.  
  389.    * BUG FIX: The stringclass screwed up in computing it's minimum size when
  390.      it did not have a frame attached to it.
  391.  
  392.    * BUG FIX: The layout engine sometimes GURU'd. Ooops. Should be fixed now.
  393.  
  394.    * BUG FIX: The LISTV_RenderHook did not setup the entry correctly in the
  395.      lvRender structure.
  396.  
  397.    * Added the LVM_REMENTRY method which can be used to remove single entries
  398.      from a listview.
  399.  
  400.    * Added the LVM_REFRESH method to refresh the listview object after
  401.      adding/removing some entries.
  402.  
  403.    * BUG FIX: The infoclass computed the maximum width of the formatted text
  404.      one pixel to small.
  405.  
  406. V37.13
  407. ======
  408.  
  409.    * BUG FIX: The window class did not succeed in opening a screen size window
  410.      when the screen was smaller than it's default size.
  411.  
  412.    * BUG FIX: The listview class did not refresh the list correctly when a
  413.      single entry was added.
  414.  
  415.    * BUG FIX: Fixed the AddEntryVisible macro in bgui_macros.h.
  416.  
  417.    * BUG FIX: Fixed a couple of bugs in the string class. Bugs found by Paul
  418.      weterings.
  419.  
  420.    * BUG FIX: The Toggle() and KeyToggle() macros from bgui_macros.h did not
  421.      make it possible to set a toggle button selected by default. Note that
  422.      these macros require an additional parameter now. Bug found by Paul
  423.      Weterings.
  424.  
  425. V37.14
  426. ======
  427.  
  428.    * BUG FIX: The online-help system of the gadget objects did not work at all.
  429.  
  430.    * BUG FIX: The drop-box frame used incorrect spacing when the
  431.      FRF_THIN_FRAME flag was set.  The radio-button frame totally ignored the
  432.      FRF_THIN_FRAME flag. Bugs found by Paul Weterings.
  433.  
  434.    * Added the LISTV_TitleHook attribute to the listview class. This hook
  435.      makes it possible to render a title entry in the listview object. Can
  436.      come in handy with multi-column listviews.
  437.  
  438.    * Re-arranged and adjusted the source for DICE V3.0 commercial. Boy oh boy
  439.      it really is picky about correct prototyping now...
  440.  
  441.    * The list class now uses the memory pool routines from the 3.1 amiga.lib.
  442.      This means working memory pools even on 2.04.
  443.  
  444.    * BUG FIX: The group class did not always yield the correct results when
  445.      requesting the minimum size of another group. This resulted in a
  446.      wrong-sized mx object when it had a label attached to it.
  447.  
  448. V37.15
  449. ======
  450.  
  451.    * Added task-relative information tracking. This means that from now on the
  452.      library is a `SINGLE-TASK-LIBRARY'. If your code spawns a sub-task that
  453.      requires the use of `BGUI' then this sub-task must open the library
  454.      itself. It may not share the base pointer with the main-task.
  455.  
  456.    * Added the WINDOW_UniqueID attribute to give a window a unique ID of your
  457.      choise. This ID is used by the task-relative information tracking to
  458.      store the window size/position even when you dispose of the object and
  459.      re-generate it.
  460.  
  461.    * Added the LVM_SORT method for re-sorting the entries in a listview
  462.      object. Also added the SortList() macro in bgui_macros.h for this purpose.
  463.  
  464.    * Made the flag bits of the frameclass and labelclass also available as
  465.      boolean tags. This allows for easier switching of single flags.
  466.  
  467.    * BUG FIX: The lvma_Entry field of the lvmAddSingle structure was defined
  468.      as (APTR *) while it should be (APTR).
  469.  
  470. V37.16
  471. ======
  472.  
  473.    * You can now reset the knob of a sliderclass or propclass object to it's
  474.      initial setting by pressing the right mouse button before releasing the
  475.      left-button.
  476.  
  477.    * Added the WINDOW_Window attribute to enable you to obtain a pointer to
  478.      the window structure of a windowclass object.
  479.  
  480.    * Started keeping up with the source code revisions using the Revision
  481.      Control System (RCS) supplied with DICE 3.0.
  482.  
  483. V37.17
  484. ======
  485.  
  486.    * BUG FIX: The buttonclass now takes the design size of a vectorclass image
  487.      into consideration when computing it's minimum size. Bug found by Wouter
  488.      van Oortmersen.
  489.  
  490.    * BUG FIX: Fixed the rendering bug of objects on invisible pages. Bug found
  491.      by Paul Weterings.
  492.  
  493.    * BUG_FIX: Fixed the enforcer hits of Infoclass objects in a Pageclass
  494.      object. Bug found by Paul Weterings.
  495.  
  496.    * Added a XEN style button frame to the frame class. Also added some new
  497.      macros to the bgui_macros header specially for this purpose.
  498.  
  499.    * Added XEN macros in the bgui_macros.h file for the checkbox and cycle
  500.      objects.
  501.  
  502.    * Added the GROUP_BackFill attribute to supply a group backfill possibility
  503.      without a group frame.
  504.  
  505.    * Added the BREQF_XEN_BUTTONS flag to supply the requester buttons with a
  506.      XEN style frame.
  507.  
  508. V37.18
  509. ======
  510.  
  511.    * BUG FIX: The infoclass sometimes screwed up with text-styles. I'm not
  512.      sure if this was a bug in the infoclass itself but I have coded a
  513.      work-around to the problem.
  514.  
  515.    * Optimized setting pens and drawmode in a rastport. Now the code checks
  516.      the pens and drawmode to see if it needs to change. Should speed up the
  517.      rendering somewhat.
  518.  
  519.    * BUG FIX: When flushing the library from memory while one or more of the
  520.      classes failed to free could result in a GURU. This should not happen
  521.      anymore.
  522.  
  523.    * Added the seperator class which adds the possibility to seperate groups
  524.      with a single 3D line with or without a title. Also added a couple of
  525.      macros to bgui_macros.h for this purpose.
  526.  
  527. V37.19
  528. ======
  529.  
  530.    * BUG FIX: The stringclass by default used the wrong pens to render it's
  531.      contents. Now the correct pens are used by default keeping track of user
  532.      set pens.
  533.  
  534.    * Added some simple macros for NewMenu definitions in the bgui_macros.h
  535.      header.
  536.  
  537.    * BUG FIX: Drag-selecting menus would result in replying a non-existant
  538.      IntuiMsg (enforcer hits...  GURUs... `ouch!')
  539.  
  540.    * BUG FIX: Fixed a bug that caused rendering object labels in the wrong
  541.      color when the object was selected and the label was located outside the
  542.      object hit area.
  543.  
  544.    * BUG FIX: The HorizSlider() macro was broken.
  545.  
  546.    * BUG_FIX: Some classes screwed up computing their minimum size when the
  547.      label was located above or below the object. This should not happen
  548.      anymore.
  549.  
  550.    * Extended the Listview class rendering hook result code. When the hook
  551.      returns non-NULL the class will see this as a string and render it. A
  552.      result code of NULL is ignored. Please read the LISTV_DisplayHook section
  553.      of the listviewclass.doc file for more information on this subject.
  554.  
  555.    * Added hook-notification to the baseclass. Please refer to the
  556.      baseclass.doc file for more information on this subject.
  557.  
  558.    * BUG FIX: Fixed a small bug in the tab-cycling code of the string class.
  559.      The bug caused non-tabcycling gadgets to notify the event-handler when it
  560.      was de-activated.
  561.  
  562.    * BUG FIX: The AddEntrySelect() macro was broken.
  563.  
  564.    * Added the LVM_LOCKLIST and LVM_UNLOCKLIST methods to the listview class.
  565.      These methods should have been in there from the beginning to prevent
  566.      strange results when somebody is fiddling with the listview while you are
  567.      changing one of it's entries.
  568.  
  569.    * BUG FIX: While converting a text-editor I'm writing to `BGUI' I came
  570.      accross a buch of small bugs bugs in `BGUI'. These (I shall not list
  571.      them) should be fixed now.
  572.  
  573.    * BUG FIX: When using a shared window port for the `BGUI' windows it would
  574.      happen that the event handler did not get the initial IDCMP_ACTIVEWINDOW
  575.      message because the port is added to the window after it is opened. Now
  576.      the code will manually activate the window when the WA_Active tag is TRUE
  577.      after the port has been added.
  578.  
  579. V37.20
  580. ======
  581.  
  582.    * Changed the behaviour of the WINDOW_UniqueID tag when the
  583.      WINDOW_PosRelBox tag is also used.  Please refer to the WINDOW_UniqueID
  584.      section of the windowclass.doc file for more information.
  585.  
  586.    * Added some extra code to ensure that the window sizing-gadget size is
  587.      computed correctly. This will ensure the correct operation with patches
  588.      like SysIHack. One note about SysIHack... When using the PGA_NewLook
  589.      feature SysIHack renderes the proportional gadget left&and up from the
  590.      intended location and to big and it ignores the PGA_Borderless tag. I
  591.      would report this to the author of SysIHack if only I knew who Mr. BOOPSI
  592.      was :)
  593.  
  594.    * BUG FIX: The progress class now checks frame thickness before filling the
  595.      indicator.
  596.  
  597.    * BUG FIX: Fixed the PACKPENS() macro in bgui_macros.h. Docs clearly state
  598.      "packed as two WORDs into a longword" but as it seems it should be two
  599.      bytes in a word? Am I wrong???
  600.  
  601.    * BUG FIX: After testing BGUI on another public screen with a BACKGROUNDPEN
  602.      different from 0 it came to my attention that BGUI had some problems with
  603.      this. Now all rendering should occure OK with a different BACKGROUNDPEN
  604.      than 0. I have fixed the labelclass and vectorclass and added a
  605.      backfill-hook (WA_BackFill) to the windowclass to fix these problems.
  606.  
  607.    * Added a pop-up menu option to the cycle class. Also added a couple of new
  608.      macros to bgui_macros.h to support this new option. Suggested by Jim
  609.      Cooper.
  610.  
  611.    * The infoclass does not clip the text anymore when it won't fit. Now it
  612.      simply renders as much text as will fit in the area.
  613.  
  614.    * Removed the text class completely. It was not a necessary class since the
  615.      infoclass can do the most important things that the text class could do.
  616.      The info class even does a better job at it. This also means that I
  617.      finally got rid of all rastport-clipping.
  618.  
  619.    * The complete GUI is rendered in a buffer bitmap so that it can be made
  620.      visible in a single blit. This looks much smoother than rendering visible
  621.      on-screen. If a buffer cannot be allocated the rendering occures
  622.      on-screen.
  623.  
  624.    * BUG FIX: It was possible to size an empty group to 0x0 which lead to
  625.      potentially dangerous situations. I have made all RectFill() that are
  626.      performed safe which means that the rectangle specified is checked for
  627.      wierd values.
  628.  
  629. V37.21
  630. ======
  631.  
  632.    * Changed the imagery of the cycle gadget when it is in Popup mode. It is
  633.      not the best of imagery but it works. If anybody has a better idea let me
  634.      know.
  635.  
  636.    * BUG FIX: A window with an ID and positioned relative to a rectangle would
  637.      be placed wrong if the window was to big for the used font. This does not
  638.      happen anymore but windows which grow to big for the used font and have
  639.      to use the fall-back font will not remember it's size.
  640.  
  641.    * BUG FIX: Fixed a big-fat-stupid-lame-bug in the external class. I failed
  642.      to aply rule number one when writing a BOOPSI dispatcher by not using the
  643.      __geta4 (__saveds) qualifier.  Bug found by Paul Weterings.
  644.  
  645.    * BUG FIX: Using a frame and/or a label on the master-group caused the
  646.      rendering of this frame and/or label to be overwritten. Bug found by Paul
  647.      Weterings.
  648.  
  649.    * Changed Xen frame rendering so that you get "rounded" corners. Looks much
  650.      better.
  651.  
  652.    * Made the LISTV_Top attribute gettable as it should have been al along.
  653.  
  654.    * BUG FIX: Some IDCMP bits where not accessable with an IDCMP hook. Should
  655.      be fixed now.
  656.  
  657.    * Added the EXT_NoRebuild attribute to handle external gadgetclasses which
  658.      are smart enough to handle a resize themselves. Suggested by Paul
  659.      Weterings.
  660.  
  661.    * BUG FIX: The stringclass rendered through the active page when it's
  662.      contents was changed.  This also happened when the gadget was not located
  663.      on the active page. Bug found by Paul Weterings.
  664.  
  665.    * Added a method to the groupclass to insert members at any place into an
  666.      already existing group. Suggested by Paul Weterings.
  667.  
  668.    * The cycleclass notification (in popup mode) is now delayed until the menu
  669.      window is closed. Suggested by Paul Weterings.
  670.  
  671.    * The pageclass now also renders the current page in a buffer before it is
  672.      shown. Note that this is only true when the page to show is a group.
  673.      Suggested by Paul Weterings.
  674.  
  675. V37.22
  676. ======
  677.  
  678.    * BUG FIX: LISTV_MakeVisible and LISTV_Select did not make the item
  679.      visible. Bug found by Paul Weterings.
  680.  
  681.    * Added a couple of macros to create non-fixed size checkbox objects.
  682.      Suggested by Paul Weterings.
  683.  
  684.    * Made the WINDOW_Screen and WINDOW_PubScreenName settable when the window
  685.      is closed. Suggested by Paul Weterings.
  686.  
  687.    * BUG FIX: The Popup menu of a Popup-Cycle object would not open on the
  688.      correct screen when the window in which it resided was not located on the
  689.      default public screen. Bug found by Paul Weterings.
  690.  
  691.    * BUG FIX: Erasing the title area of a seperatorclass object did not yield
  692.      the desired result when the area-pattern of the rastport was not cleared.
  693.  
  694.    * BUG FIX: After running tests with memoration it came to my attention that
  695.      the re-size oprations where not working properly if the buffer rastport
  696.      could not be allocated.
  697.  
  698. V37.23
  699. ======
  700.  
  701.    * Enhanced listview class scrolling a bit. The old routines had a lot of
  702.      overhead because they simple re-rendered the complete list even if the
  703.      top only changed one or two places.
  704.  
  705.    * Switching pages in a pageclass object looks smoother now.
  706.  
  707.    * Most small allocations are now made in memory pools instead of allocating
  708.      them directly from the system memory pool.
  709.  
  710.    * Changed the operation of the WINDOW_SigMask, WINDOW_AppMask and
  711.      COMM_SigMask attributes. Instead of OR'ing the mask value to the storage
  712.      field the mask value is set now.
  713.  
  714.    * Added the WINDOW_Bounds attribute which can be used to open a window at
  715.      the place and width the size that you want. Suggested by Paul Weterings.
  716.  
  717.    * Initial Public Beta Release... (30.09.94)
  718.  
  719. V37.24
  720. ======
  721.  
  722.    * Added the BT_HelpText and WINDOW_HelpText attributes to pop a requester
  723.      with a help text instead of having to use AmigaGuide. for small help.
  724.      This also results in a new BGUI catalog (version 2).
  725.  
  726.    * BUG FIX: BGUI did not recognize language changes. Now each time BGUI
  727.      needs to access localized strings the catalog is refreshed before
  728.      actually accessing the strings. This results in the strings always being
  729.      in the preferred language.
  730.  
  731.    * Added the GROUP_EqualWidth and GROUP_EqualHeight attributes to make the
  732.      members of a group all have the same minimum width and or height.
  733.  
  734.    * Made the WINDOW_Bounds attribute settable with OM_SET. You can set it
  735.      when the window is closed or opened. Suggested by Paul Weterings.
  736.  
  737.    * Initial Public Release (09.10.94)
  738.  
  739. V37.25
  740. ======
  741.  
  742.    * BUG FIX: Most of the macros in the Amiga E support that called uppon
  743.      BGUI_DoGadgetMethodA() were broken. Major screwup from my side. Sorry...
  744.  
  745.    * Made the GA_Disabled tag settable with OM_SET/OM_UPDATE on groupclass
  746.      objects. When set on a groupclass object all members in the group will be
  747.      disabled/enabled. Suggested by Paul Weterings.
  748.  
  749.    * BUG FIX: The mxclass can now be controlled by the keyboard. Keyboard
  750.      control of this class is style guide compliant.
  751.  
  752.    * BUG FIX: Sometimes the key message handler of the windowclass could leave
  753.      a message pending which could result in repeated keys not functioning
  754.      anymore. Should be fixed now.
  755.  
  756.    * BUG FIX: Manually setting LISTV_Top with OM_SET or OM_UPDATE did not move
  757.      the scroller along with the list.
  758.  
  759.    * Increased the minimum height of a listview class object.
  760.  
  761.    * The initial public release lacked the presence of the clib/bgui_protos.h
  762.      file. Sorry about that.
  763.  
  764.    * BUG FIX: The MsgInfo in bgui_macros.[p]ma of the Amiga E support was
  765.      broken.
  766.  
  767.    * BUG FIX: For some strange reason the OS 2.04 propgclass seems to fiddle
  768.      with the font in the RastPort. This caused the adding of entries in a
  769.      listview object to give strange results when the system font and screen
  770.      font differed. Should be fixed now. Bug found by Michael Barsoom.
  771.  
  772.    * Added the PAGE_NoBufferRP and WINDOW_NoBufferRP attributes. This will
  773.      alow you to have rendering happen on-screen.
  774.  
  775.    * Release 1.0a. Public bug-fix update #1.
  776.  
  777. V38.1
  778. =====
  779.  
  780.    * Enhanced adding a single entry visibly to a listview object. This used to
  781.      cause a complete list refresh with every added item. Now only the added
  782.      entry and the prop are refreshed.
  783.  
  784.    * Seperators are rendered slightly different now. Suggested by Magnus
  785.      Holmgren.
  786.  
  787.    * Added the LISTV_LastClickedNum attribute which can be used to query the
  788.      ordinal number of the last selected entry of a listview object.
  789.  
  790.    * Added the WM_REPORT_ID method to the windowclass. This method can be used
  791.      to set return codes from a IDCMP-hook or Verify-hook. The ID's are
  792.      stacked internally and the next time the windowclass IDCMP handler is
  793.      called returned to the application one by one.
  794.  
  795.    * Made the VIT_VectorArray and VIT_BuiltIn attributes settable on a
  796.      buttonclass object. Suggested by Paul Weterings.
  797.  
  798.    * BUG FIX: Setting both the GA_Disabled and CYC_Active tag on a cycle class
  799.      object would not change the label visibly.
  800.  
  801.    * Added the LGO_NoAlign layout attribute to the groupclass which forces the
  802.      layout engine not to align the object it's hitbox with the others.
  803.      Suggested by Florian Vorberger.
  804.  
  805.    * Now NULL may be passed with the STRINGA_TextVal attribute to the
  806.      stringclass. Normally the system stringclass does not allow this.
  807.  
  808.    * Added the some magic numbers to the LISTV_Select attribute. Suggested by
  809.      Michael Barsoom.
  810.  
  811.    * The alignment of the hitboxes in a vertical group sometimes made the
  812.      total width of the group to large. Should not happen anymore. Bug found
  813.      by Florian Vorberger.
  814.  
  815.    * Added the LVM_MOVE method and LISTV_NewPosition attribute for moving
  816.      entries in a listview object.
  817.  
  818.    * Added the LISTV_NumEntries attribute for getting the number of entries in
  819.      a listview object.
  820.  
  821.    * Added the LISTV_Select_Page_Up and LISTV_Select_Page_Down magic numbers.
  822.  
  823.    * Enhanced the indicatorclass minimum size calculations. The old routine
  824.      was 100% precise but took ages to complete with a large difference
  825.      between min & max. It now "guesses" the correct minimum size but is
  826.      `much' faster. Reported by several people.
  827.  
  828.    * Added keyboard shortcuts for BGUI_RequestA().
  829.  
  830.    * Added the BUTTON_Image and BUTTON_Selected image tags to the buttonclass
  831.      which may be used to add Intuition or BOOPSI imagery to a button object.
  832.  
  833.    * Optimized some stuff internally which saved a couple of bytes of the
  834.      library. Still under the 100000 bytes ;)
  835.  
  836.    * Added the WINDOW_AutoAspect attribute and BREQF_AUTO_ASPECT flag to let
  837.      the windowclass decide wether the objects use thick or thin framing.
  838.      Suggested by Paul Weterings. Passed the 100000 bytes :(
  839.  
  840.    * From now on infoclass command sequences are valid for listviewclass text
  841.      entries. Also returned strings from a LISTV_DisplayHook may contain
  842.      infoclass command sequences.
  843.  
  844.    * The format string specified with the INFO_TextFormat and
  845.      INDIC_FormatString attributes may now contain locale.library
  846.      FormatString() formatting (%) codes. Please note that locale specific
  847.      formatting codes will only work when the locale.library is available.
  848.  
  849.    * Added a screen field to the bguiRequest structure.
  850.  
  851.    * Added a Tabber mode for the mxclass. This mode will give you a Tabs-like
  852.      object which can be used to select pages from a pageclass object.
  853.  
  854.    * Release 1.1. Second Public Release.
  855.  
  856. V38.2
  857. =====
  858.  
  859.    * Shifted numerical gadget keys did not work. Should be fixed now. Bug
  860.      found by Florian Vorberger.
  861.  
  862.    * Added the LISTV_MinEntriesShown attribute which can be used to determine
  863.      the number of entries that should be visible at all times. Suggested by
  864.      Stan Burton.
  865.  
  866.    * BUG FIX: Setting the CYC_Active attribute on a cycleclass object when it
  867.      was not in a window would erase the old label but not set the new one.
  868.      Bug found by Florian Vorberger.
  869.  
  870.    * BUG FIX: AmigaGuide help did not open on the correct screen if the window
  871.      was not located on the default public screen. Bug found by Zachary A.
  872.      Forsyth.
  873.  
  874.    * BUG FIX: Controlling a Mx object in tabs mode would not cycle through
  875.      when it reached the end or the beginning like it was supposed to. Also
  876.      key-activation of an mx object did not generate an event.  Bugs found by
  877.      Johan Eliasson.
  878.  
  879.    * BUG FIX: Fixed a rendering bug in the stringclass and one in the cycle
  880.      class.
  881.  
  882.    * BUG FIX: Sometimes a string object could be resized to small. Bug found
  883.      by Stan Burton.
  884.  
  885.    * BUG FIX: Changing the text or arguments of a frameless infoclass object
  886.      would result in overwriting the old text instead of replacing it. Bug
  887.      found by several people.
  888.  
  889.    * BUG FIX: Again some macros from the E support where broker. Jeezz, maybe
  890.      I should have tested them all.
  891.  
  892.    * Released as bug-fix patch on the mailinglist.
  893.  
  894. V38.3
  895. =====
  896.  
  897.    * Changed the Amiga E support to require at least version 3.1a of the Amiga
  898.      E compiler.
  899.  
  900.    * BUG FIX: Tab-cycling should work  through pages now. Simply add all
  901.      string objects with WM_TABCYCLE_ODER and you're done. Reported by Patrick
  902.      (poseidon@newswire.gun.d).
  903.  
  904.    * BUG FIX: The groupclass could compute the minimum size incorrect. Should
  905.      be fixed now.  Reported by Florian Vorberger.
  906.  
  907.    * BUG FIX: The internal memory allocator screwed up by releasing 4 bytes
  908.      short of the original allocator. Also the initializing the localization
  909.      gave mungwall hits. Bugs found by Magne Oestlyngen.
  910.  
  911.    * BUG FIX: The listview class became as slow as a C= 64 diskdrive when
  912.      scrolling it at the end of a large amount of entries. This should not
  913.      happen anymore. Bug found by Johan Eliasson.
  914.  
  915.    * Enhanced adding single entries to a listview. Adding with LVAP_TAIL or
  916.      LVAP_HEAD should be considerably faster now.
  917.  
  918.    * BUG FIX: The last enhancement could cause problems when adding the first
  919.      item. Fixed.
  920.  
  921.    * BUG FIX: The layout engine did not read all tags when there where tags
  922.      specified after adding the members.
  923.  
  924.    * Added the PAGE_Inverted and GROUP_Inverted tags. These tags are
  925.      implemented to serve the assembly macro package.
  926.  
  927.    * Totally re-written the assembly header bgui_macros.i. Now it works. Added
  928.      a small demonstration in the Demo drawer which shows the usage of the
  929.      bgui.library in assembler. Paul Hamer put me up to this.
  930.  
  931.    * BUG FIX: Disabling and enabling a checkbox object ar any object with a
  932.      EdgesOnly frame should not be a problem anymore. Bug found by several
  933.      people.
  934.  
  935.    * BUG FIX: Again AmigaGuide help did not pop up on the right screen. I
  936.      fixed for the help attached to the gadget objects but help attached to a
  937.      window still had this problem. Bug found by Zachary A.  Forsyth.
  938.  
  939.    * BUG FIX: Opening the library twice in the same task and closing it once
  940.      would result in a crash when using BGUI after the single close. Bug found
  941.      by Janna Jalkanen.
  942.  
  943.    * BUG FIX: A PROGRESS_Max equal to PROGRESS_Min would result in a crash.
  944.      Bug found by Florian Vorberger.
  945.  
  946.    * BUG FIX: Newlines in the arguments of a BGUI_RequestA() requester
  947.      resulted in an incorrectly sized requester. Bug found by Janne Jalkanen.
  948.  
  949.    * Public bug-fix update #2.
  950.  
  951. V38.4
  952. =====
  953.  
  954.    * BUG FIX: The way the localization was handler could dereference invalid
  955.      memory pointers.
  956.  
  957.    * BUG FIX: Renamed the "Label" macro from the assembly support to "xLabel"
  958.      to avoid clashes with the exec/types.i "LABEL" macro. Also the
  959.      "WindowOpen" macro has been renamed to "xWindowOpen".
  960.  
  961.    * Released as 1.1b.
  962.  
  963. V38.5
  964. =====
  965.  
  966.    * Quirk Fix: Uppercase GadgetKeys() now are converted to lowercase for them
  967.      to work correctly.  Found by Michael Barsoom.
  968.  
  969.    * BUG FIX: Fixed a mean bug in the library task code which could cause
  970.      serious problems when the same task opens the library twice. Bug found by
  971.      Janne Jalkanen.
  972.  
  973.    * Work arround: BGUI should not have any problems with hacks like MagicMenu
  974.      and CycleToMenu anymore. Included some additional code from Osma
  975.      Ahvenlampi's "NewObtainGIRPort" patch to the library.
  976.  
  977.    * BUG FIX: Replace a couple of NULLs by NIL in the E macros.
  978.  
  979.    * BUG FIX: Fixed some font related problems with the cycle gadget.
  980.      Sometimes the font height was computed wrong.
  981.  
  982.    * BUG FIX: In some rare occasions the keyboard handling of objects could
  983.      get caught in a loop.  Should not happen anymore.
  984.  
  985.    * BUG FIX: The windowclass did not fall back to topaz 8 or the specified
  986.      font anymore! Fixing this bug also shed light on another bug in the
  987.      layout engine. Both bugs fixed. Bug found by Nick Christie.
  988.  
  989.    * Quirk fix. It was not possible to add tab-cycle string objects to a
  990.      window object in stages.  Now it is. Found by Paul Weterings.
  991.  
  992.    * BUG FIX: Adding the first item to a listview did not show on the screen.
  993.      Bug found by Emmanuel Doguet.
  994.  
  995.    * The rastport pointer passed to the Listview custom rendering hook is
  996.      cached now.
  997.  
  998.    * BUG FIX: Removed a rendering bug in the MX class which screwed up visuals
  999.      a bit when the object was switched from disabled to enabled state. This
  1000.      was true for the normal MX objects and mx objects in tabs mode. Bug found
  1001.      by Janne Jalkanen.
  1002.  
  1003.    * Added some defines to fix a spelling error in the BGUI headers in which
  1004.      "Separator" was misspelled as "Seperator". Reported by Nick Christie.
  1005.  
  1006.    * BUG FIX: The minimum height of string object with a label was bigger than
  1007.      string objects without a label. Bug found by Emmanuel Doguet.
  1008.  
  1009.    * Released as bug-fix patch on the mailing list.
  1010.  
  1011. V38.6
  1012. =====
  1013.  
  1014.    * The window class now makes a private copy of the NewMenu array passed via
  1015.      the WINDOW_MenuStrip attribute. Suggested by Janne Jalkanen.
  1016.  
  1017.    * BUG FIX: String class objects, when located in a tab-cycle order, sent
  1018.      two or even three messages to the windowclass event handler. Bug found by
  1019.      several people.
  1020.  
  1021.    * BUG FIX: Yet another dangerous bug found in the library task-tracking
  1022.      code. Sometimes the semaphore did not get released. Bug found by Zachary
  1023.      A. Forsyth.
  1024.  
  1025. V38.7
  1026. =====
  1027.  
  1028.    * BUG FIX: Setting an attribute to a cycleclass object on an invisible page
  1029.      would screw up the display. Should be fixed now. Bug found by Stan Burton.
  1030.  
  1031.    * BUG FIX?: Fixed a bug in the keyboard handling which might be the cause
  1032.      of the fact that sometimes qualifier keys randomly selected objects in a
  1033.      window. Reported by several people.
  1034.  
  1035.    * The stringclass now supplies all buffers for you.
  1036.  
  1037. Future
  1038. ******
  1039.  
  1040.    This is a list of known bugs and quirks. Please read this before you start
  1041. sending me bug reports and suggestions.
  1042.  
  1043.      `BUG'  = A bug that is still present.
  1044.      `SUG'  = A suggestion which might be implemented in the future.
  1045.      `REV'  = Revision and/or fine-tuning that still needs to be done.
  1046.      `MAY'  = Maybe...
  1047.  
  1048.    * `BUG' - The layout engine locks up when, due to a bug or hacking, you
  1049.      re-size a window smaller than it's minimum as decided by BGUI. Reported
  1050.      by Florian Vorberger.
  1051.  
  1052.    * `BUG' - The infoclass screws up computing it's minimum dimensions when
  1053.      the last thing in the text is a command sequence. Should not be a real
  1054.      problem since it is bullshit to end a string with a command sequence.
  1055.  
  1056.    * `BUG' - With some font italics can screw up the display because the system
  1057.      renders the text a couple of pixels left of the point where it should.
  1058.      Can't seem to find out why this is.
  1059.  
  1060.    * `SUG' - A Palette selector class. External? Suggested by Paul Weterings.
  1061.  
  1062.    * `REV' - `BGUI' gadgets on intuition requesters is `NOT' supported yet.
  1063.  
  1064.    * `REV' - The commodity class could use some cleaning up. I'm not really
  1065.      satisfied with it as it is.
  1066.  
  1067.    * `REV' - The format of the library and class documentation files suck. I
  1068.      should convert them to "real" autodoc format or amigaguide files.
  1069.  
  1070.    * `REV' - Error reporting. It's OK that a window failed to open or an
  1071.      object failed to create but it would be nice to know why. Both numeric
  1072.      and textual error descriptions should be made available.
  1073.  
  1074.    * `REV' - Adding method, conditional and hook notification to the window
  1075.      class to. This will allow notification to happen on the application task
  1076.      instead of the input.device task.
  1077.  
  1078.    * `REV' - Work on the menus. For now it is not possible to dynamically add
  1079.      items, add notification or help files to the menus. This really sucks.
  1080.  
  1081.    * `REV' - Try to cut down on the code size. Although, all things
  1082.      considering, BGUI is not excessive in size I'de like to see it smaller.
  1083.  
  1084.    * `MAY' - Letting the window backfill hook optionally make use of the
  1085.      preferred workbench window backfill pattern or picture.
  1086.  
  1087.    * `MAY' - Fonts and images in the info class.
  1088.  
  1089.    * `MAY' - Add a posibility to "snapshot" window sizes to disk. Should this
  1090.      be up to the application programmer? Suggested by Paul Weterings.
  1091.  
  1092.    * `MAY' - Take the layout engine of BGUI and make a seperate shared/link
  1093.      library out of it. This would result in a +/- 10 KByte shared/link
  1094.      library with the same functionality as the BGUI layout engine. Maybe this
  1095.      will satisfy those people who are always bitching and complaining about
  1096.      GUI engine libraries.
  1097.  
  1098. Thanks To
  1099. *********
  1100.  
  1101.    The author would like to extend a big thank you to the following people for
  1102. their valuable help:
  1103.  
  1104.    Bjorn Reese, Jim Cooper, Jim Karczewski, Keith Christopher, Michael
  1105. Wiedmer, Michiel Willems, Magne Oestlyngen, Magnus Enarsson, Martin Bischoff,
  1106. Parrish Heywood, Patrick van Beem, Paul Hill, Paul McLachlan, Paul Weterings,
  1107. Per Harald Myrvang, Ranulf Doswell, Zachary A Forsyth.
  1108.  
  1109.    And the people I may have forgotten...
  1110.  
  1111.    Thanks should also go to:
  1112.  
  1113.    * All the folks at `O.I.C'. Obvious Implementations Corporation. This
  1114.      software is completely developed using DICE in the registered version and
  1115.      later on the commercial version.
  1116.  
  1117.    * Francesco Devitt for MemLeak. A remarkable simple but very useful tool ;)
  1118.  
  1119.    * Reinhard Spisser and Sebastiano Vigna for their wonderful Makeinfo which
  1120.      was used to generate this AmigaGuide./ASCII documentation.
  1121.  
  1122.    * Bryce Nesbitt and Michael Sinz for Enforcer. The best bug-hunter for the
  1123.      Amiga.
  1124.  
  1125. Index
  1126. *****
  1127.  
  1128. * Menu:
  1129.  
  1130. * Disclaimer:                           Disclaimer.
  1131. * Features:                             Features.
  1132. * Future:                               Future.
  1133. * History:                              History.
  1134. * Installation:                         Installation.
  1135. * Introduction:                         Introduction.
  1136. * Keyboard & Mouse:                     Keyboard & Mouse.
  1137. * License:                              License.
  1138. * Preface:                              Preface.
  1139. * Read Me:                              Read Me.
  1140. * Requirements:                         Requirements.
  1141. * Thanks To:                            Thanks To.
  1142. * V37.11:                               V37.11.
  1143. * V37.12:                               V37.12.
  1144. * V37.13:                               V37.13.
  1145. * V37.14:                               V37.14.
  1146. * V37.15:                               V37.15.
  1147. * V37.16:                               V37.16.
  1148. * V37.17:                               V37.17.
  1149. * V37.18:                               V37.18.
  1150. * V37.19:                               V37.19.
  1151. * V37.20:                               V37.20.
  1152. * V37.21:                               V37.21.
  1153. * V37.22:                               V37.22.
  1154. * V37.23:                               V37.23.
  1155. * V37.24:                               V37.24.
  1156. * V37.25:                               V37.25.
  1157. * V38.1:                                V38.1.
  1158. * V38.2:                                V38.2.
  1159. * V38.3:                                V38.3.
  1160. * V38.4:                                V38.4.
  1161. * V38.5:                                V38.5.
  1162. * V38.6:                                V38.6.
  1163. * V38.7:                                V38.7.
  1164.  
  1165.